package com.sg.dto.integration.component;

import com.sg.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Objects;

/**
 * @desc ConfItemResultDto
 * @使用场景
 */
@Data
public class ConfItemResultDto extends BaseDto implements Serializable {

    /**
     * 选项关系ID
     */
    @NotNull(message = "选项关系ID 不能为空")
    @ApiModelProperty("选项关系ID ")
    private String confOptionRshipId;

    /**
     * 答案结果值
     */
    @NotNull(message = "答案结果值不能为空")
    @ApiModelProperty("答案结果值")
    private String endValue;

    /**
     * 答案选项类型 RADIO:单选型 MULTIPLE:多选型 TEXT:填空型
     */
    @NotNull(message = "答案选项类型不能为空")
    @ApiModelProperty("答案选项类型")
    private String optionType;

    /**
     * 答案结果类型 NUMERIC:数值 TEXT:文本 DATETIME:日期 TIME:时间
     */
    @ApiModelProperty("答案结果类型")
    private String resultType;

    /**
     * 答案排序
     */
    @NotNull(message = "答案排序不能为空")
    @ApiModelProperty("答案排序")
    private Long confOptionSortNum;

    /**
     * 选项标识
     */
    @NotNull(message = "选项标识不能为空")
    @ApiModelProperty("选项标识")
    private String confOptionCode;

    /**
     * 选项名称
     */
    @NotNull(message = "选项名称不能为空")
    @ApiModelProperty("选项名称")
    private String confOptionName;

    /**
     * 配置方案ID
     */
    @ApiModelProperty("配置方案ID")
    private String confSchemeId;

    /**
     * 配置方案标识
     */
    @ApiModelProperty("配置方案标识")
    private String confSchemeCode;

    /**
     * 扩展字段1（非必填）
     */
    @ApiModelProperty("扩展字段1 （非必填）")
    private String extensionField1;

    /**
     * 扩展字段2（非必填）
     */
    @ApiModelProperty("扩展字段2（非必填）")
    private String extensionField2;

    /**
     * 扩展字段3（非必填）
     */
    @ApiModelProperty("扩展字段3 （非必填）")
    private String extensionField3;

    /**
     * 扩展字段4（非必填）
     */
    @ApiModelProperty("扩展字段4（非必填）")
    private String extensionField4;

    /**
     * 答案商业位置（非必填） MENUS:菜单 TOP_FIND:发现上 FIND:发现 TOP_CONF_CENTER:配置中心上 CONF_CENTER:配置中心
     */
    @ApiModelProperty("答案商业位置（非必填）")
    private String optionThrowPlace;

    /**
     * 答案ID
     */
    @ApiModelProperty("答案ID")
    private String optionResultId;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        if (!super.equals(o)) return false;
        ConfItemResultDto that = (ConfItemResultDto) o;
        return (
                confOptionRshipId == that.confOptionRshipId &&
                        endValue == that.endValue &&
                        optionType == that.optionType &&
                        resultType == that.resultType &&
                        confOptionSortNum == that.confOptionSortNum &&
                        confOptionCode == that.confOptionCode &&
                        confOptionName == that.confOptionName &&
                        confSchemeId == that.confSchemeId &&
                        confSchemeCode == that.confSchemeCode &&
                        extensionField1 == that.extensionField1 &&
                        extensionField2 == that.extensionField2 &&
                        extensionField3 == that.extensionField3 &&
                        extensionField4 == that.extensionField4 &&
                        optionThrowPlace == that.optionThrowPlace &&
                        optionResultId == that.optionResultId
        );
    }

    @Override
    public int hashCode() {
        return Objects.hash(
                super.hashCode(),
                confOptionRshipId,
                endValue,
                optionType,
                resultType,
                confOptionSortNum,
                confOptionCode,
                confOptionName,
                confSchemeId,
                confSchemeCode,
                extensionField1,
                extensionField2,
                extensionField3,
                extensionField4,
                optionThrowPlace,
                optionResultId
        );
    }

}
